Techniques for automatically placing escape holes during three-dimensional printing

ABSTRACT

In one embodiment of the present invention, an escape hole generator creates escapes holes designed to facilitate removal of support and/or unprinted material generated inside enclosed hollows of three-dimensional (3D) digital models during 3D printing. In operation, the escape hole generator identifies a hollow included in the three-dimensional model and then selects optimized locations for escape holes. Notably, the escape hole generator selects the locations to optimize placement heuristics, such as favoring locations closer to the bottom of the 3D model, while satisfying escape hole constraints (e.g., hole size and spacing requirements). The escape hole generator then perforates the hollow at the selected locations with geometries that provide channels from the outer surface of the hollow to the outer surface of the hollow. Advantageously, automating escape hole generation enables efficient creation of hollowed 3D models that reduce 3D printing time and material usage compared to solid 3D model counterparts.

BACKGROUND OF THE INVENTION

Field of the Invention

Embodiments of the present invention relate generally to computerprocessing and, more specifically, to techniques for automaticallyplacing escape holes during three-dimensional printing.

Description of the Related Art

A three-dimensional (3D) printer generates a 3D object based on a 3Dprintable digital model, such as a 3D mesh of triangles. Typically, a 3Dprinter interprets a single, closed 3D mesh as delineating a solidcomponent of the model. However, since the amount of material or timerequired to print many solid 3D objects may be unacceptable large/long,the designer often modifies the single closed 3D mesh to delineate oneor more hollow components or regions.

To “hollow” the 3D model, the designer creates an inner shell that isseparated from the single, closed 3D mesh (the outer shell) by thedesired wall thickness. The 3D printer interprets the combination ofinner shell and outer shell as a hollow component, and leaves theinterior of the inner shell empty or filled with unprinted material. Forinstance, resin-based stereolithography printers fill hollow componentswith uncured resin. Similarly, fused-powder-style printers fill hollowcomponents with powder, and fused deposition modeling printers oftenfill hollow components with dissolvable support material.

Removing the unprinted material encased in hollow components isdesirable for multiple reasons. For instance, unprinted material that isnot removed adds weight to the model, may cause post-processing visualdefects (e.g. uneven dying), and is unable to be recycled for futureuse. Further, many 3D printers will not print hollow components that arefully enclosed, rejecting the 3D model or printing solid components inlieu of the fully enclosed hollow components. Consequently to enable therelease of the unprinted material enclosed in hollow components, thedesigner modifies the 3D model to specify tiny holes, known as “escape”holes that perforate each hollow component.

In one approach to adding escape holes to a 3D model, a designerattempts to manually modify the 3D model via an interactive, graphicaluser interface (GUI)—based modeling tool. With such tools, for eachdesired escape hole, the designer creates a channel between the innershell and outer shell. The designer then visual inspects the 3D model,ensuring that the created channel fully breaches the hollow componentand complies with 3D printer-specific escape hole constraints, such asminimum hole size. With this approach, the designer often iterates eachtime he/she creates an escape hole—fine-tuning the escape hole based onthe visual representation of the 3D model in the GUI until the desiredescape hole is correctly represented by the 3D grid. As is clear, such aprocess is time consuming, tedious, and error-prone. Further, sinceautomated flows are often used to generate 3D models and GUI-basedmodelling tools are not widely available for such flows, this GUI-basedapproach to adding escape holes has limited applicability.

As the foregoing illustrates, what is needed in the art are moreeffective techniques for generating escape holes to create hollowcomponents or regions during 3D printing.

SUMMARY OF THE INVENTION

One embodiment of the present invention sets forth acomputer-implemented method for automatically placing one or more escapeholes when printing a three-dimensional model. The method includesidentifying a hollow region of a three-dimensional model; determining afirst location for a first escape hole based on the hollow region, aninitial heuristic, and one or more escape hole constraints; andgenerating the first escape hole to provide a channel from the interiorof the hollow region to the exterior of the hollow region at the firstlocation.

One advantage of the disclosed approach is that the automated creationof escape holes enables efficient generation of 3D models that fullyleverage the capabilities of 3D printers to minimize both the printingtime and material dedicated to generating 3D models. In particular, thedisclosed techniques ensure compliance with escape hole constraintsenforced by the 3D printer, such as a minimum number of escape holes perhollow, without relying on user-interaction. Consequently, thesetechniques facilitate comprehensive automation of hollowing flows,dramatically reducing the required design time compared to conventionalflows that include manual, interactive steps to perforate hollowcomponents or regions with appropriate escape holes.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the manner in which the above recited features of the presentinvention can be understood in detail, a more particular description ofthe invention, briefly summarized above, may be had by reference toembodiments, some of which are illustrated in the appended drawings. Itis to be noted, however, that the appended drawings illustrate onlytypical embodiments of this invention and are therefore not to beconsidered limiting of its scope, for the invention may admit to otherequally effective embodiments. The patent or application file containsat least one drawing executed in color. Copies of this patent or patentapplication publication with color drawing(s) will be provided by theOffice upon request and payment of the necessary fee.

FIG. 1 is a block diagram illustrating a computer system configured toimplement one or more aspects of the present invention;

FIG. 2 is a block diagram illustrating a three-dimensional (3D) printingsystem controlled by the computer system of FIG. 1 and configured toimplement one or more aspects of the present invention;

FIG. 3 is a conceptual diagram illustrating a cross section of ahollowed 3D model that is perforated with escape holes, according to oneembodiment of the present invention;

FIG. 4 is a conceptual diagram illustrating the escape hole generator ofFIG. 2, according to one embodiment of the present invention;

FIG. 5 is a conceptual illustration of the escape holes created by theescape hole generator of FIG. 2, according to one embodiment of thepresent invention; and

FIGS. 6A-6B set forth a flow diagram of method steps for adding escapeholes to a 3D model, according to one embodiment of the presentinvention.

DETAILED DESCRIPTION

In the following description, numerous specific details are set forth toprovide a more thorough understanding of the present invention. However,it will be apparent to one of skill in the art that the presentinvention may be practiced without one or more of these specificdetails.

System Overview

FIG. 1 is a block diagram illustrating a computer system 100 configuredto implement one or more aspects of the present invention. As shown, thecomputer system 100 includes, without limitation, a central processingunit (CPU) 170, a system memory 174, a graphics processing unit (GPU)172, input devices 112, and a display device 114. The CPU 170 receivesinput user input information from the input devices 112, such as akeyboard or a mouse. In operation, the CPU 170 is the master processorof the computer system 100, controlling and coordinating operations ofother system components. In particular, the CPU 170 issues commands thatcontrol the operation of the GPU 172. The GPU 172 incorporates circuitryoptimized for graphics and video processing, including, for example,video output circuitry. The GPU 172 delivers pixels to the displaydevice 114 that may be any conventional cathode ray tube, liquid crystaldisplay, light-emitting diode display, or the like. In variousembodiments, GPU 172 may be integrated with one or more of otherelements of FIG. 1 to form a single system. For example, the GPU 172 maybe integrated with the CPU 170 and other connection circuitry on asingle chip to form a system on chip (SoC).

The system memory 174 stores content, such as software applications anddata, for use by the CPU 170 and the GPU 172. As shown, the systemmemory 174 includes a 3D model generator 110 and additional 3D modellingtools 120. The 3D model generator 110 and the 3D modelling tools 120 aresoftware applications that execute on the CPU 170, the GPU 172, or anycombination of the CPU 170 and the GPU 172. The 3D model generator 110enables specification of a 3D model. The 3D modelling tools 120 includea variety of software applications that provide interactive and/or batchprocessing of 3D models to facilitate 3D printing. Notably, the 3Dmodeling tools 120 automate both hollowing of 3D models and generatingescape holes for the hollowed 3D models.

In alternate embodiments, the system memory 174 may not include the 3Dmodel generator 110 and the 3D modelling tools 120. In otherembodiments, the 3D model generator 110 and/or any number of the 3Dmodelling tools 120 are integrated into any number (including one) ofother software applications. In some embodiments, the 3D model generator110 and/or any number of the 3D modelling tools 120 may be provided asan application program (or programs) stored on computer readable mediasuch as a CD-ROM, DVD-ROM, flash memory module, or other tangiblestorage media.

The components illustrated in the computer system 100 may be included inany type of computer system 100, e.g., desktop computers, servercomputers, laptop computers, tablet computers, and the like.Additionally, software applications illustrated in computer system 100may execute on distributed systems communicating over computer networksincluding local area networks or large, wide area networks, such as theInternet. Notably, the 3D modelling tools 120 described herein are notlimited to any particular computing system and may be adapted to takeadvantage of new computing systems as they become available.

It will be appreciated that the computer system 100 shown herein isillustrative and that variations and modifications are possible. Thenumber of CPUs 170, the number of GPUs 172, the number of systemmemories 174, and the number of applications included in the systemmemory 174 may be modified as desired. Further, the connection topologybetween the various units in FIG. 1 may be modified as desired.

FIG. 2 is a block diagram illustrating a three-dimensional (3D) printingsystem 200 controlled by the computer system 100 of FIG. 1 andconfigured to implement one or more aspects of the present invention. Asshown, the 3D printing system 200 includes, without limitation, the 3Dmodel generator 110, the 3D modelling tools 120, a 3D printer 250, and a3D model finisher 260. As shown in FIG. 1, the 3D model generator 110and the 3D modelling tools 120 are included in the system memory 174 ofthe computer system 100 and execute on the CPU 170 and/or the GPU 172.

In operation, the 3D model generator 110 enables specification of a 3Dmodel 202 that describes a 3D object. The 3D model generator 110 may beimplemented in any technically feasible fashion. For instance, the 3Dmodel generator 110 may include computer aided design (CAD) software.Such CAD software often includes a graphical user interface thatconverts designer input such as symbols and brush stroke operations togeometries in the 3D model 202. Alternatively the 3D model generator 110may be a 3D scanner that analyzes an existing 3D solid object to createthe 3D model 202 as a digital template for creation of copies of theexisting 3D object.

The 3D model 202 may conform to any 3D printable format as known in theart. For instance, in some embodiments the 3D model 202 may capture unitnormal and vertices that define the 3D solid object in thestereolithograpy format. In other embodiments, the 3D model 202 maycapture a 3D mesh of interconnected triangles that define the 3D objectin the collaborative design activity (COLLADA) format. In alternateembodiments, the 3D model 202 is created manually and the 3D modelgenerator 110 is not included in the 3D printing system 200.

As shown, the 3D model generator 110 is coupled to the 3D modellingtools 120. This coupling may be implemented in any technically feasiblefashion, such as exporting the 3D model 202 from the 3D model generator110 and then importing the 3D model 202 to the 3D modelling tools 120.As also shown, the 3D modelling tools 120 include, without limitation, a3D model graphical user interface (GUI) 220, a hollowing tool 222, andan escape hole generator 230.

The 3D model GUI 220 is configured to receive designer input informationfrom the input devices 112, such as a keyboard or a mouse. After the 3Dmodelling tools 120 process the designer input information inconjunction with the 3D model 202, the 3D model GUI 220 delivers pixelsto the display device 114. The 3D modelling tools 120 are configured tocontinuously repeat this cycle, enabling the designer to dynamicallyinteract with the 3D model 202 based on corresponding images on thedisplay device 114.

One or more of the 3D modelling tools 120 may also include batchprocessing interfaces, enabling automation of design flows withoutmanual intervention. In alternative embodiments, any number of the 3Dmodelling tools 120 may support only interactive processing or onlybatch processing. If the 3D modelling tools 120 support only batchprocessing, then the 3D model GUI 220 may be omitted from the computersystem 100. The 3D modelling tools 120 includes a variety of automatedtools that optimize the 3D model 202 to enable the 3D printer 250 toaccurately, efficiently, and cost-effectively fabricate the 3D object.

To reduce the material and/or time required for the 3D printer 250 togenerate the 3D object corresponding to the 3D model 202, the hollowingtool 222 is configured to convert solid, enclosed volumes in the 3Dmodel 202 to hollow, enclosed volumes. For discussion purposes only,each enclosed volume is hereafter referred to as a “component” and theperimeter of each component is referred to as “outer shell,”irrespective of whether the component is solid or hollow. To “hollow” acomponent, the hollowing tool 222 modifies the 3D model 202 to create aninner shell that is a scaled-down version of the outer shell and isseparated from the outer shell by the desired object wall thickness.Notably, the hollowing tool 222 generates hollow components that do notinclude escape holes.

The hollowing tool 222 may be configured to hollow any number of solidcomponents. In some embodiments, 3D model 202 may initially depict oneor more hollow components or regions and the hollowing tool 222 does notmodify these existing hollow components or regions. In alternateembodiments, the hollowing tool 222 is not included, but the 3D model202 includes at least one hollow component or region that does notincorporate escape holes.

To allow escape of unprinted material from hollow components or regions,the 3D printer 250 typically enforces printer-specific escape holerequirements. Such escape hole requirements may include a minimum numberof escape holes for each hollow component or region and a minimum escapehole width. The minimum escape hole width may vary based on the numberof escape holes. If these printer-specific escape hole requirements arenot met, then the 3D printer 250 may not print the 3D model as intended.For example, the 3D printer 250 may reject the 3D model 202 withoutgenerating a 3D object, or create a 3D object in which eachnon-compliant hollow component or region in the 3D model 202 is replacedwith a solid counterpart. Advantageously, the escape hole generator 230is configured to automate the process of modifying the 3D model toinclude escape holes in hollow components or regions. Not only does theescape hole generator 230 reduce the time required to design correctlyprinted hollow 3D components or regions, but the escape hole generator230 also enables batch design flows to include automatic escape holegeneration steps.

For each hollow component or region in the 3D model 202, the escape holegenerator 230 selects optimized escape locations of the escape holesbased on escape hole constraints of the 3D printer 250, userconstraints, and placement heuristics. After selecting the escapelocations of the escape holes, the escape hole generator 320 generateshole geometries—automatically determining hole geometries that, whenremoved from the 3D object, properly and optimally perforate the hollowcomponents or regions. More specifically, for each escape hole, theescape hole generator 220 selects the general shape for the holegeometry, aligns the hole geometry along the surface normal of the innershell, and ensures that the hole geometry completely covers the desiredwall segment of the hollow component. Finally, the escape hole generator230 performs a Boolean subtraction operation, subtracting the holegeometries from the 3D model 202 to create a perforated 3D model 240.

The 3D printer 250 is any device capable of additively printing a 3Dobject based on the perorated 3D model 240. The 3D printer 250 may beconfigured to build-up any type of 3D object in any technically feasiblefashion. For instance, in some embodiments, the 3D printer 250 extrudesplastic, and the 3D printer 250 may be configured to print plasticreplacement parts for tools based on blueprints expressed as perforate3D models 240. In other embodiments, the 3D printer 250 generates livecells, and the 3D printer 250 may be configured to print organs, such askidneys. The escape holes ensure that the 3D printer 250 correctlyprocesses hollow components and regions, thereby reducing the materialand time required to generate the hollowed 3D object compared to a solidversion of the 3D object.

After the 3D printer 250 generates the top layer of the 3D object,unprinted material and any support material generated to ensure theintegrity of the 3D object throughout the 3D printing process isunnecessary. Such unnecessary material needlessly adds weight to the 3Dobject as well as detracting from the aesthetic appeal and/orfunctionality of the 3D object. For this reason, the 3D model finisher260 performs removal operations that remove the extraneous material fromthe 3D object, thereby revealing the 3D object specified by theperorated 3D model 240 unencumbered by the constraints of themanufacturing process. In some embodiments, the 3D model finisher 260 isa human who manually extracts unprinted material via the escape holes,and cuts away or peels off the support material. In other embodiments,the unprinted and the support material are water soluble, and the 3Dmodel finisher 260 is a bath of water.

It will be appreciated that the system shown herein is illustrative andthat variations and modifications are possible. The connection topology,including the number and arrangement of the 3D model generator 110, the3D model GUI 220, the hollowing tool 222, the escape hole generator 230,the 3D printer 250, and the 3D model finisher 260, may be modified asdesired. In certain embodiments, one or more components shown in FIGS. 1and 2 may not be present. For instance, the 3D model generator 110, the3D model GUI 220, and the hollowing tool 222 could be eliminated, andthe escape hole generator 230 could receive a manually created file asinput.

Lastly, the 3D model GUI 220, the hollowing tool 222, and the escapehole generator 230 may be implemented in any combination of software andhardware units. In some embodiments the escape hole generator 230 may beremoved and the associated functionality may be incorporated into thehollowing tool 222. In other embodiments, a graphical user interface forthe escape hole generator 230 is included in the 3D model GUI 220.

FIG. 3 is a conceptual diagram illustrating a cross section 310 of ahollowed 3D model 202 that is perforated with escape holes 335,according to one embodiment of the present invention. For discussionpurposes only, the context of FIG. 3 is that the designer generated the3D model 202 of a bunny via the 3D model generator 110. The hollowingtool 222 3D received the 3D model 222 and converted the solid body ofthe bunny to a hollow “main” component of the body, shown as a hollowbunny body 310, and two solid “ear” components. The hollow bunny body310 includes an outer shell 330 separated from an inner shell 340 at auniform wall thickness. Subsequently, the escape hole generator 230created the two escape holes 335 in the hollow bunny body 310. As shown,both of the escapes holes 335 breach the wall of the hollow bunny body310, allowing unprinted and/or support material to escape from thehollow bunny body 310 of the generated 3D object.

Adding Escape Holes to a 3D Model

FIG. 4 is a conceptual diagram illustrating the escape hole generator230 of FIG. 2, according to one embodiment of the present invention. Asshown, the escape hole generator 230 is configured to modify a hollowcomponent model 402 to optimize the location and shape of escape holes335 based on one or more escape hole constraints 420. The escape holeconstraints 420 may be set in any technically feasible fashion and mayreflect constraints of the 3D printer 250 and/or user preferences. Asshown, the escape hole generator 230 includes, without limitation, abottom chunk identifier 410, a hole placement engine 430, and anextraction tool 450.

For discussion purposes only, the escape hole generator 230 is describedin terms of operating on the single hollow component model 402.Typically, the hollow component model 402 is included in the initial 3Dmodel 202 or is generated by the hollowing tool 222. In alternateembodiments, the escape hole generator 230 may receive the 3D model 202,identify any number of hollow components or regions in any technicallyfeasible fashion, and then generate one or more escape holes 335 foreach of these hollow components or regions. In some embodiments, thefunctionality of the escape hole generator 230 may be added to thehollowing tool 222, and the escape hole generator 230 may be removedfrom 3D printing system 200.

In operation, the bottom chunk identifier 410 evaluates the hollowcomponent model 402 in conjunction with the escape hole constraints 420,and identifies an optimized region of the hollow component model 402 toperforate with the escape holes 335, shown as bottom chunk 415. Theescape hole constraints 420 may represent any number of constraintsimposed by the 3D printer 250 and/or any number of user preferences.Typically, the escape hole constraints 420 include a “holes per hollow”and a “hole radius.” The bottom chunk 415 is a region that spans fromthe vertically lowest point of the hollow component model 402 (i.e., thebottom) to a uniform vertical height of the hollow component model 402.Thus, the bottom chunk 415 represents a bottom-most portion of thehollow component model 402. The bottom chunk identifier 410 sets theheight of the bottom chunk 415 to the smallest value that providessufficient surface area for the specified number and size of escapeholes 335.

For example, suppose that the bottom of the hollow component model 402is a flat surface that is capable of accommodating the specified escapeholes 335. In such a scenario, the bottom chunk identifier 410 sets theheight of the bottom chunk 415 to a smallest values (such as 0.1% of theheight of the hollow component model 402) to ensure that the escapeholes 335 are placed on the bottom of the hollow component model 402. Bycontrast, suppose that the entire surface area of the hollow componentmodel 402 is unable to accommodate the specified escape holes 335. Thebottom chunk 410 sets the height of the bottom chunk 415 to 100% of theheight of the hollow component model 402 to enable the maximum number ofescape holes 335 to be generated.

The bottom chunk identifier 410 may identify the bottom chunk 415 in anytechnically feasible fashion. In some embodiments, the bottom chunkidentifier 410 identifies the bottom chunk 415 based on the followingalgorithm:

1)  Set hole buffer size:    HoleBufferSize = HoleRadius/2; 2) Determinediameter needed for a hole:    HS = HoleRadius + 2*HoleBufferSize 3)Find smallest vertical region R of the hollow component model 402 thatcan contain the desired number of holes: i. Set vertical height tosmallest:  VH = 0.1% of the height of the hollow component model  402ii. Quickly guess at how many holes can fit in the bottom chunk 410 withvertical height VH. Note, 0.64 is the average fraction of volume thatcan be filled by randomly-packed spheres.  HoleSurfaceArea ≈ π * (HS/2)² NumberHolesThatFit ≈ 0.64 * (ChunkSurfaceArea /  HoleSurfaceArea) iii.If (NumberHolesThatFit) >= specified “holes per hollow”  OR VH = 100%then Done  Else increase VH and repeat ii and iii.

In other embodiments the bottom chunk identifier 410 may select thebottom chunk 415 in any technically feasible fashion. In yet otherembodiments, the bottom chunk identifier 410 may be replaced by any toolthat identifies a region of the hollow component model 402 in which toplace escape holes 335. In some embodiments, the bottom chunk identifier410 may be omitted and the locations of the escape holes 335 may bepositioned anywhere on the surface of the hollow component model 402.

After receiving the bottom chunk 415, the hole placement engine 430selects optimized locations for escape holes 335 along the inner shell340 of the bottom chuck 415, and creates hole geometries 435 thatperforate the wall of the bottom chunk 415 at these optimized locations.Although the location of the escape holes 335 are presented in thecontext of the inner shell 340, the location of the escape holes may bespecified in any consistent manner, such as the middle of the escapehole 335 or a position along the outer shell 330. In general, to guidethe selection of the escape locations of the escape holes 335, the holeplacement engine 430 implements placement heuristics.

For example, in some embodiments the escapes holes 335 are intended todrain melted wax from the interior of the bottom chunk 415 and the holeplacement engine 430 is configured to favor placing escape holes 335 atthe bottom of large internal cavities. In other embodiments, the holeplacement engine 430 is configured to consider flat areas as relatively“good” areas for the escape holes 335, and areas where the inner openingof a hole would have very little clearance as relatively “bad” areas forthe escape holes 335. In yet other embodiments, the hole placementengine 430 is configured to tailor the locations of the escape holes 335based on user-defined preferences. For instance, in alternateembodiments, the user may define preferred areas for escape holes 335via painted surface masks.

In operation, the hole placement engine 430 selects the optimizedlocations of the escape holes 335 sequentially. As shown, the holeplacement engine 430 includes initial placement heuristics 432 andsubsequent placement heuristics 434. The hole placement engine 430selects the location for the first escape hole 335 in the bottom chunk415 based on the initial placement heuristics 432 and the location foradditional escape holes 335 based on the subsequent placement heuristics434. The subsequent placement heuristics 434 typically incorporate thelocation of proceeding escape holes 335 as part of the computation of anoptimized location for each subsequent escape hole 335.

For instance, in one embodiment, the hole placement engine 430 sets thelocation of the first escape hole 335 to the center of the bottom-mostsurface in the bottom chunk 415. The hole placement engine 430 thensequentially sets the location of each additional escape hole 335 to begeodesically (i.e., the shortest route in curved space) furthest fromthe previously selected locations of the escape holes 335.

In other embodiments, the hole placement engine 430 includes differentinitial placement heuristics 432 and/or subsequent placement heuristics434 and, consequently, the locations of the escape holes 335 varyaccordingly. For instance, the hole placement engine 430 may beconfigured to place the first escape hole 335 at the geodesic center ofthe bottom chunk 415 instead of the bottom-most surface. In alternateembodiments, the hole placement engine 430 may apply any number ofalgorithms to optimally select any number and locations of the escapeholes 335.

After the hole placement engine 430 determines the optimized locationsof the escape holes 335, the hole placement engine 430 generates thehole geometries 435 that, when removed from the bottom chunk 415,properly perforate the bottom chunk 415. Notably, the hole placementengine 430 generates the hole geometries 435 to create unobstructedchannels from the inner shell 340 (i.e., the inside of the bottom chunk415) to the outer shell 330 (i.e. the outside of the bottom chunk 415)at the optimized locations. Advantageously, the hole placement engine430 automatically selects both the shape and depth of the holegeometries 435 to ease the removal of support and/or unprinted material.

For each hole, the hole placement engine 430 determines an initial shapeand then modifies the shape to ensure that the shape optimizes theremoval of the unprinted material—generating the hole geometry 435. Theinitial shape may be determined in any technically feasible fashion. Forexample, the initial shape be a simple cylinder that extends from thehole location on the inner shell 340 to the outer shell 330. In someembodiments, the hole placement engine 430 computes the appropriateshape based on the following algorithm:

-   1) Calculate the surface normal of the inner shell 340 at the hole    location.-   2) Use the surface normal to find a ray-intersection with the outer    shell 330.-   3) Set the axis of a cylinder to the ray-intersection and position    the cylinder to extend from the inner shell 340 at the location of    the escape hole 335 to the corresponding location on the outer shell    330.-   4) Set the radius of the cylinder to the “hole radius” specified in    the escape hole constraints 420.

In some embodiments, the hole placement engine 430 enables the user tointeractively modify the hole radius and/or position via the 3D modelGUI 220. Further, since the shape of each escape hole 335 correlates tothe ease with which the unprinted material is removed, the holeplacement engine 430 may enable the user to guide the determination ofthe initial shape and/or initial shape parameters. Notably, in someembodiments, the initial shape may be a truncated cone that has a radiusat the inner shell 340 that is equal or larger than the radius at theouter shell 330, and the 3D model GUI 220 may enable the user to selecta “taper angle.”

As persons skilled in the art will recognize, to ensure that theappropriate portions of the wall of the bottom chunk 415 are removed,the hole placement engine 430 may create one or more hole geometries 435that extend past the inner and/or outer shell 330 of the bottom chunk.Suppose, for example, that the hole placement engine 430 were to createa simple cylinder that extended from a point A on the inner shell 340 toa point B on the outer shell 330. Further, suppose that the surface ofthe bottom chunk 415 were curved at points A and B. In such a scenario,subtracting the simple cylinder from the bottom chunk 415 would resultin some portion of the wall of the bottom chunk 415 remaining, reducingthe effectiveness of the escape hole 335 represented by the simplecylinder.

For this reason, after determining the initial shape of each escape hole335, the hole placement engine 430 automatically fine-tunes thecorresponding hole geometry 435, ensuring that the depth of the escapehole 435 is sufficient to create an unobstructed channel. For instance,in some embodiments, the hole placement engine 430 offsets a simplecylinder hole geometry 435 that extends from end point A to end point Busing the following strategy at both end points:

-   1) Perform a breadth-first search, capped at the “hole radius,” from    the triangle containing the end point, selecting all points that are    geodesically connected to the endpoint and are contained in an    infinite cylinder along the axis from A to B.-   2) Extend the end point so that the end point includes all selected    points.-   3) Further extend the end point by a “buffer,” such as 5% to avoid    any numerical issues.

The extraction tool 450 then removes the hole geometries 435 from thehollow component model 402, creating a perforated component model 492.More specifically, for each of the hole geometries 435, the extractiontool 450 performs a Boolean subtraction of the hole geometry 435 fromthe hollow component model 402—“cutting out” the corresponding hole fromthe hollow component model 402.

FIG. 5 is a conceptual illustration of the escape holes 335 generated bythe escape hole generator 230 of FIG. 2, according to one embodiment ofthe present invention. For discussion purposes only, the images depictedin FIG. 5 are snapshots of a GUI, such as the 3D model GUI 220, thatenables user interaction with the escape hole generator 230.

As shown, a bunny visualization 510 includes an image of the 3D model202 of a bunny, the hole geometries 435 superimposed on the 3D model202, and a constraint interface 502. The constraint interface 502includes user-configurable options such as the “holes per hollow,” “holeradius,” and “hole taper.” As the user adjust these options, the escapehole generator 230 updates the hole geometries 435 and then the GUIupdates the displayed hole geometries 435. Advantageously, such aninteractive process enables the user to efficiently fine-tune thegenerated hole geometries 435.

A close-up visualization 520 depicts a magnified view of one of the holegeometries 435 generated by the escape hole generator 230. As shown, thehole geometry 435 has the basic shape of a tapered cylinder, with bothan inner extension 560 and an outer extension 550 that ensure that theextraction tool 450 removes the desired material.

FIGS. 6A-6B set forth a flow diagram of method steps for adding escapeholes to a 3D model, according to one embodiment of the presentinvention. Although the method steps are described with reference to thesystems of FIGS. 1-5, persons skilled in the art will understand thatany system configured to implement the method steps, in any order, fallswithin the scope of the present invention. For discussion purposes only,the 3D model 202 represents a single hollow component. In alternateembodiments, the 3D model 202 may depict any number of hollow componentsor regions and any number of solid components. The escape hole generator230 is configured to perform the method steps for each hollow componentor region specified in the 3D model 202.

As shown, a method 600 begins at step 602, where the escape holegenerator 230 receives the 3D model 202 and the escape hole constraints420. After receiving the 3D model 202, the escape hole generator 230identifies the hollow component model 402 included in the 3D model. Atstep 604, the bottom chunk identifier 410 estimates the smallest bottomchunk 415 of the hollow component (based on the escape hole constraints420, such as “hole radius”) that is able to accommodate the specified“holes per hollow.”

At step 606, the hole placement engine 430 computes the location of thefirst escape hole 335 designed to perforate the hollow component. Thehole placement engine 430 determines this location based on both theescape hole constraints 420 and the initial placement heuristics 432.The hole placement engine 430 then initializes a list of holes to thelocation of first escape hole 335. If, at step 608, the hole placementengine 430 determines that the list of holes includes the specifiednumber of holes per hollow, then the method 600 proceeds to step 612.

At step 608, if the hole placement engine 430 determines that the listof holes does not include the specified number of holes per hollow, thenthe method 600 proceeds to step 610. At step 610, the hole placementengine 430 computes the location of a new escape hole 335 designed toperforate the hollow component. The hole placement engine 430 computesthis location based on both the escape hole constraints 420, thesubsequent placement heuristics 434, and the list of holes (i.e., thepreviously selected locations of the escape holes 335). As part of step610, the hole placement engine 430 adds the new location of the newescape hole 335 to the list of holes. The method 600 then returns tostep 608, where the hole placement engine 430 assesses whether the listof holes includes the specified number of holes per hollow. The holeplacement engine 430 cycles through steps 608-610, determining optimizedlocations of escape holes 335, until the hole placement engine 430 hasplaced the specified number of escape holes 335.

At step 612, the hole placement engine 430 computes hole geometries 435for each of the escape holes 335 represented in the list o holes basedon the escape hole constraints 420, including any user-specifiedpreferences. More specifically, for the location of each of the escapeholes 335, the hole placement engine 430 generates a corresponding holegeometry 435 that extends from the hole location of the escape hole 335(specified on the inner shell 340 of the hollow component model 202) tothe outer shell 330.

At step 614, the hole placement engine 430 modifies the hole geometries435 to ensure that the proper channels are created in the wall of thehollow component. For example, if a particular escape hole 335 islocated on a curved surface of the hollow component model 202, then thehole placement engine 430 may extend the corresponding hole geometry 435to ensure that material in the wall of the hollow component does notcompromise the escape hole 335. At step 616, the extraction tool 450performs Boolean difference operations between the hollow componentmodel 402 and each of the escape holes geometries 435 to create theperforated component model 492.

In sum, the disclosed techniques may be used to automate portions of the3D object design process. More specifically, an escape hole generatormodifies a 3D mesh that represents a hollowed version of the 3Dobject—perforating hollow components or regions with escape holesdesigned to enable removal of unprinted and/or support materialgenerated during 3D printing. In operation, the hole placement enginewithin the escape hole generator implements heuristics to optimallyselect the number and locations of the escape holes. Typically, theheuristics favor placing escape holes towards the bottom of the 3D modelwhile complying with both 3D printer and user constraints.

For each selected hole location, the escape hole generator then createsa hole geometry, such as a tapered cylinder, that connects the innershell 340 of the hollow component or region with the outer shell 330 ofthe hollow component or region and is aligned along the surface normalto the inner shell 340 at the selected location. Notably, the escapehole generator optimizes the hole geometries based on both 3D printerrequirements (e.g., minimum hole radius) and user preferences, such as adesired hole taper. Subsequently, the escape hole generator performs aBoolean difference between the 3D mesh and the hole geometries, therebyperforating the original 3D model with ergonomically-shaped escape holesat the selected locations of the escape holes 335.

Advantageously, automating escape hole generation reduces both the timerequired to design practical, hollow 3D meshes and the effort requiredto remove unprinted and/or support material created during 3D printing.In particular, designers may efficiently leverage hollowing techniquesto reduce the amount of material, printing time, and weight of 3Dobjects without incurring unacceptable long design and/or manufacturingtimes associated with conventional, manual, escape hole generation.Further, unlike conventional interactive techniques, automatic escapehole generation enables automated flows to create hollow components orregions during 3D printing irrespective of whether GUI-based modellingtools are available.

The descriptions of the various embodiments have been presented forpurposes of illustration, but are not intended to be exhaustive orlimited to the embodiments disclosed. Many modifications and variationswill be apparent to those of ordinary skill in the art without departingfrom the scope and spirit of the described embodiments.

Aspects of the present embodiments may be embodied as a system, methodor computer program product. Accordingly, aspects of the presentdisclosure may take the form of an entirely hardware embodiment, anentirely software embodiment (including firmware, resident software,micro-code, etc.) or an embodiment combining software and hardwareaspects that may all generally be referred to herein as a “circuit,”“module” or “system.” Furthermore, aspects of the present disclosure maytake the form of a computer program product embodied in one or morecomputer readable medium(s) having computer readable program codeembodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

Aspects of the present disclosure are described above with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of thedisclosure. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, enable the implementation of the functions/acts specified inthe flowchart and/or block diagram block or blocks. Such processors maybe, without limitation, general purpose processors, special-purposeprocessors, application-specific processors, or field-programmable

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present disclosure. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

While the preceding is directed to embodiments of the presentdisclosure, other and further embodiments of the disclosure may bedevised without departing from the basic scope thereof, and the scopethereof is determined by the claims that follow.

The invention claimed is:
 1. A computer-implemented method forautomatically placing one or more escape holes when printing athree-dimensional (3D) model, the method comprising: identifying ahollow region of the three-dimensional model; automatically determining,via an initial heuristic executed by a 3D modelling tool, a firstlocation for a first escape hole based on the hollow region and one ormore escape hole constraints; automatically generating, via the 3Dmodelling tool, the first escape hole to provide a channel from theinterior of the hollow region to the exterior of the hollow region atthe first location; and determining, via a subsequent heuristic, asecond location of a second escape hole based on the hollow region, andthe one or more escape hole constraints, wherein the subsequentheuristic determines that the second location of the second escape holeis geodesically furthest from the first location for the first escapehole.
 2. The method of claim 1, further comprising: generating thesecond escape hole that provides a channel from the interior of thehollow region to the exterior of the hollow region at the secondlocation.
 3. The method of claim 1, wherein the hollow region isrepresented by a three-dimensional mesh, and generating the first escapehole comprises: generating hole geometry based on the first location;and performing a Boolean subtraction operation that perforates thethree-dimensional mesh with the hole geometry.
 4. The method of claim 3,wherein the first location is disposed on an inner shell of the hollowregion, and generating the hole geometry comprises: calculating asurface normal to the inner shell at the first location; determining,based on the surface normal, a point on an outer shell of the hollowregion where a ray intersects the outer shell; and generating athree-dimensional tubular object that spans from the first locationdisposed on the inner shell to the point on the outer shell and isaligned with an axis corresponding to the surface normal.
 5. The methodof claim 4, wherein the three-dimensional tubular object is a truncatedcone that varies in diameter between a first radius at the inner shellto a second radius at the outer shell, wherein the second radius is lessthan the first radius.
 6. The method of claim 4, wherein generating thehole geometry further comprises: identifying an infinite cylinder thatis centered along the axis of the three-dimensional tubular object;selecting neighboring points, wherein the neighboring points aregeodesically connected to the three-dimensional tubular object and liewithin the infinite cylinder; and extending the three-dimensionaltubular object to include the neighboring points.
 7. The method of claim1, wherein identifying the hollow region comprises identifying ashortest portion of the three-dimensional model that includes a lowestvertical point in the three-dimensional model and has a surface arealarge enough to accommodate a desired number of escape holes.
 8. Themethod of claim 1, wherein the determining the first location comprisesidentifying the center of the bottom-most inner shell of the hollowregion.
 9. The method of claim 1, wherein the one or more escape holeconstraints includes a predetermined number of escape holes per hollowregion, and identifying the hollow region comprises identifying asmallest portion of the three-dimensional model having a surface arealarge enough to include the predetermined number of escape holes perhollow region.
 10. The method of claim 1, wherein the one or more escapehole constraints include a predetermined number of escape holes perhollow region and a predetermined radius for each escape hole.
 11. Themethod of claim 10, wherein identifying the hollow region comprisesidentifying a smallest portion of the three-dimensional model having asurface area large enough to include the predetermined number of escapeholes per hollow region, each escape hole having the predeterminedradius.
 12. The method of claim 1, wherein the initial heuristic and thesubsequent heuristic are executed by the 3D modelling tool thatincorporates locations of proceeding escape holes to determine alocation for a subsequent escape hole.
 13. The method of claim 1,wherein the initial heuristic and the subsequent heuristic are executedby the 3D modelling tool that determines locations of escape holessequentially.
 14. The method of claim 1, wherein the initial heuristicdetermines that the first location for the first escape hole is ageodesic center of the hollow region.
 15. A computer-implemented methodfor automatically placing one or more escape holes when printing athree-dimensional (3D) model, the method comprising: identifying ahollow region of the 3D model; automatically determining, via a 3Dmodelling tool, a first location for a first escape hole based on thehollow region, an initial heuristic, and one or more escape holeconstraints that include a predetermined number of escape holes perhollow region, wherein identifying the hollow region comprisesidentifying a smallest portion of the 3D model having a surface arealarge enough to include the predetermined number of escape holes perhollow region; and automatically generating, via the 3D modelling tool,the first escape hole to provide a channel from the interior of thehollow region to the exterior of the hollow region at the firstlocation.
 16. The method of claim 15, wherein the one or more escapehole constraints further include a predetermined radius for each escapehole.